
06.11.2011, 02:18
|
Новичок на форуме
|
|
Регистрация: 06.11.2011
Сообщений: 7
|
|
Глобальный AJAX-объект
Здравствуйте. Вопрос состоит в том, стоит ли делать доступным объект, который создает XMLHttpRequest? Т.е. в моем проекте было бы удобно засунуть его в прототип базового класса, но я опасаюсь, что продвинутые пользователи будут через него слать на сервер всякие ненужные запросы.
И если не стоит, то возможно ли сделать прототип недоступным? В чужих исходниках встречал:
if (typeof Namespace == 'undefined' || !Namespace){
var Namespace={};
}
(function(){
Namespace.Class = function(){
// всякие конструкторские дела
};
Namespace.Class.prototype = {
xhr:new XMLHttpRequest(),
// ещё какие-нибудь члены класса
};
})();
Но помоему это не очень работает.
|
|

06.11.2011, 02:29
|
 |
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
Сообщение от joomba
|
но я опасаюсь, что продвинутые пользователи будут через него слать на сервер всякие ненужные запросы.
|
лолшто?
|
|

06.11.2011, 03:01
|
Новичок на форуме
|
|
Регистрация: 06.11.2011
Сообщений: 7
|
|
Сообщение от Gvozd
|
лолшто?
|
Тобишь делать так:
Namespace.Class.prototype.xhr.open("POST", "gate.php", true);
Namespace.Class.prototype.xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
Namespace.Class.prototype.xhr.send("a=1&b=2");
|
|

06.11.2011, 03:07
|
 |
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
Сообщение от joomba
|
Тобишь делать так:
|
ну и? пускай шлют
|
|

06.11.2011, 03:15
|
Новичок на форуме
|
|
Регистрация: 06.11.2011
Сообщений: 7
|
|
Сообщение от Gvozd
|
ну и? пускай шлют
|
Но дело в том, что мне надо чтобы всё происходило через UI.
|
|

06.11.2011, 03:42
|
 |
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
Сообщение от joomba
|
Но дело в том, что мне надо чтобы всё происходило через UI.
|
зачем?
|
|

06.11.2011, 06:21
|
 |
Профессор
|
|
Регистрация: 01.07.2010
Сообщений: 387
|
|
Цитата:
|
Тобишь делать так:
|
У продвинутых пользователей всегда будет возможность сделать запрос, хотите вы этого или нет.
|
|

06.11.2011, 08:55
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от joomba
|
Тобишь делать так:
Namespace.Class.prototype.xhr.open("POST", "gate.php", true);
Namespace.Class.prototype.xhr.setRequestHeader("Co ntent-Type", "application/x-www-form-urlencoded");
Namespace.Class.prototype.xhr.send("a=1&b=2");
|
Сделать var xhr = new XMLHttpRequest() в консоли, вы думаете, они не смогут?
|
|

06.11.2011, 13:25
|
 |
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
joomba,
Расскажите чуточку подробнее о своем проекте, и в чем его специфика, что вы так опасаетесь левых запросов от пользователей.
Для любого проекта, с точки зрения здравого смысла и безопасности, посылка самостоятельного AJAX-запроса не должна давать пользователю сделать что-то, что он не может с помощью UI.
То есть, если например в UI контролируются его права, и выводятся толь ко общие сообщения(/chat.php) и его приват (/chat.php?id=123), то права пользователя на чтение конкретного привата должны задаватся не только в UI, но и со стороны сервера.
Ну, и также, если UI хороший, то у пользователя не должно возникать искушения сделать что-то прямым запросом.
То есть если какое-то частое действие запрятано в вашем UI, в тридевятой вкладке, и добратся туда можно только через 17 кликов, то это плохой интерфейс, и пользователь вполне может захотеть его не использовать.
В общем, если у вас удобный UI, и безопасные проверки на сервере, то вам незачем беспокоится, что кому-то захочется так сделать. а тем, кому захочется, все арвно они никак не навредят
|
|

06.11.2011, 16:09
|
Новичок на форуме
|
|
Регистрация: 06.11.2011
Сообщений: 7
|
|
Сообщение от Kolyaj
|
Сделать var xhr = new XMLHttpRequest() в консоли, вы думаете, они не смогут?
|
Смогут, но обработчик
Namespace.Class.prototype.xhr.onreadystatechange
будет другой.
Сообщение от Gvozd
|
Расскажите чуточку подробнее о своем проекте...
|
Это социальная игра. Я боюсь, что посмотрев в коде какие делаются запросы они сделают бота.
Добавлю, что она загружается через <iframe>, при этом при загрузке игры осуществляется GET-запрос по адресу игры, в котором присутствуют такие параметры как id пользователя.
Последний раз редактировалось joomba, 06.11.2011 в 16:38.
|
|
|
|